package com.spark.WordCount;

import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.api.java.function.Function;
import org.apache.spark.api.java.function.Function2;

public class CreateRddByFileJava {
    public static void main(String[] args) {
        SparkConf sparkConf=new SparkConf()
                .setAppName("WordCount")
                .setMaster("local");
        JavaSparkContext context=new JavaSparkContext(sparkConf);
        //读取文件数据--textFile()函数
        // 第一个参数是文件路径（可以是本地，也可以是hadoop集群中的文件），第二个参数：指定生成的RDD的分区数量
        JavaRDD rdd=context.textFile("datas/1.txt",2);
        //获取每一行数据的长度--通过map函数进行转换，将每一行字符串数据String 转化为 长度Integer
        JavaRDD lengthRdd=rdd.map(new Function<String,Integer>() {
            @Override
            public Integer call(String o) throws Exception {
                return o.length();
            }
        });
        //计算文件中数据的总长度 --通过reduce()  逻辑为RDD中的数据相加
        Integer length=(Integer) lengthRdd.reduce(new Function2<Integer,Integer,Integer>() {
            @Override
            public Integer call(Integer i1, Integer i2) throws Exception {
                return i1+i2;
            }
        });
        System.out.println(length);
    }
}
